<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of resposta
 *
 * @author Daniel Medeiros - ichigo_dan@hotmail.com
 */
class RespostaAction extends ActionDefault {

    private $respostaService;
    private $enqueteService;

    public static $VIEW_RESPOSTA = "view/resposta/";


    function RespostaAction() {

        parent::__construct();
        $this->setValueOutput("respostaMenu", "current");
        $this->respostaService = new RespostaService();
        $this->enqueteService = new EnqueteService();
    }

    public function getView(){
        return RespostaAction::$VIEW_RESPOSTA;
    }

    public function cadastro() {

        $enqueteID = parent::getValueInput('enqueteID');

        parent::setValueOutput("enqueteID", $enqueteID);
        $this->setValueOutput("respostaSubmenu", "current");
        parent::setValueOutput("respostas", $this->respostaService->listar(0, "", $enqueteID, false));
        $this->show(RespostaAction::$VIEW_RESPOSTA . "cadastro.tpl");
    }

    public function salvar($respostaBean) {

        $enqueteID = parent::getValueInput('enqueteID');

        if($respostaBean->getRespostaID() != 0){//editando
            $respostaBean->setEnquete($this->respostaService->buscarPorID($respostaBean->getRespostaID(), true)->getEnquete());
        }else{//criando
            $respostaBean->setEnquete($this->enqueteService->buscarPorID($enqueteID));
        }

        $this->respostaService->salvar($respostaBean);

        parent::setValueOutput("msg2", new MensagemMeta(Constantes::$MSG_SUCCESS, Constantes::$STR_MSG_SUCCESS));
        parent::setValueOutput("respostas", $this->respostaService->listar(0, "", $enqueteID, false));
        parent::show($this->getView().'tabelaSimples.tpl');
    }

    public function editar($respostaID) {
        try{

            if($respostaID <= 0){
                parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_ERROR, "Código da Resposta Não Encontrado!!!"));
                parent::voltar();
                return;
            }

            $respostaBean = $this->respostaService->buscarPorID($respostaID);

            if($respostaBean == null){
                parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_ERROR, "Resposta Não Encontrada!!!"));
                parent::voltar();
                return;
            }

            parent::setObjectOutput($respostaBean);
			parent::setValueOutput("enqueteID", parent::getValueInput('enqueteID'));
            parent::setValueOutput("respostas", $this->respostaService->listar(0, "", parent::getValueInput('enqueteID'), false));
			$this->show(RespostaAction::$VIEW_RESPOSTA . "cadastro.tpl");

        }catch(Exception $ex){
            parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_ERROR, $ex->getMessage()));
            parent::voltar();
        }
    }

    public function listar() {
        //parent::setValueOutput('status', Util::arrayCombo($this->statusService->listar(0, Constantes::$STATUS_ENQUETE), 'statusID', 'descricao',' -- TODOS --'));
        $enqueteID = parent::getValueInput('enqueteID');
        $this->buscaListaPaginada(1,"",$enqueteID);
    }

    public function tabela($pagina = 1, $descricao = "", $enqueteID = 0) {
        $this->buscaListaPaginada($pagina, $descricao, $enqueteID);
        parent::show('view/resposta/tabela.tpl');
    }

    public function buscar() {

    }

    public function excluir($respostaID) {
        try{
            $this->excluirNormal($respostaID);
			parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_SUCCESS, Constantes::$STR_MSG_SUCCESS));
			parent::chain('RespostaAction.listar');            
        }catch(Exception $ex){            
			parent::voltar();
        }       
    }
	
	public function excluirAjax($respostaID) {	
		$this->excluirNormal($respostaID);
		parent::setValueOutput("msg2", new MensagemMeta(Constantes::$MSG_SUCCESS, Constantes::$STR_MSG_SUCCESS));
		parent::show($this->getView().'tabelaSimples.tpl');
		
	}
	
	public function excluirNormal($respostaID) {
        try{

            if($respostaID <= 0){
                parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_ERROR, "Código da Resposta Não Encontrado!!!"));
                parent::voltar();
                return;
            }

            $respostaBean = $this->respostaService->buscarPorID($respostaID, true);

            if($respostaBean == null){
                parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_ERROR, "Resposta Não Encontrada!!!"));
                parent::voltar();
                return;
            }

            $this->respostaService->excluir($respostaID);
            
            parent::setValueOutput("respostas", $this->respostaService->listar(0, "", parent::getValueInput('enqueteID'), false));
            
        }catch(Exception $ex){
            parent::setValueOutput("msg", new MensagemMeta(Constantes::$MSG_ERROR, $ex->getMessage()));
			parent::voltar();			
        }

        
    }

    public function detalhes($respostaID) {

    }

    private function buscaListaPaginada($pagina = 1, $descricao = "", $enqueteID = 0){

        $respostas = $this->respostaService->listar($pagina, $descricao, $enqueteID, true);
        $total = $this->respostaService->total($descricao, $enqueteID);

        parent::setValueOutput('respostas', $respostas);
        parent::setValueOutput('pagina', $pagina);
        parent::setValueOutput('numPaginas', Util::calculaNumPaginas($total));

    }

}

?>
